﻿using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;

public class CharacterItem : MonoBehaviour, IPointerDownHandler
{
    /// <summary>
    /// 当前物体
    /// </summary>
    private static GameObject characterPanel;
    /// <summary>
    /// 武器
    /// </summary>
    private static Weapon currentWeapon;

    void Start()
    {
        characterPanel = this.gameObject;
    }

    private static void GetCharacterItem(Weapon weapon, GameObject characterBox)
    {
        currentWeapon = weapon;

        characterBox.transform.GetChild(0).GetComponent<Image>().sprite = Resources.Load(weapon.sprite, typeof(Sprite)) as Sprite;
        characterBox.transform.GetChild(0).gameObject.SetActive(true);

        Sword.attack_num = weapon.attack;
    }

    /// <summary>
    /// 制作什么样的游戏呢。
    /// 2D横版游戏、3D游戏、RPG游戏。
    /// 这是一个星际中的试验场。星球被分成了4片大陆，栖息着4个种族。机械族-，精灵族-，恶魔族-，人类分支。各位勇者们，证明自己种群的时候到了。
    /// 卡牌游戏。
    /// 卡牌种类。
    /// 机械，精灵，战士，恶魔。
    /// 卡牌技能。
    /// 所有的被动技能主动释放键都是Q。
    /// 精灵，森林，无敌的箭术。（森林是我的家）。被动技能：向前方发射一只箭，无距离限制，碰到建筑物消失，冷却时间1分钟。
    /// 机械，钢铁巨城，钢铁的魅力（给我三颗子弹，我就是神。机甲！机甲！机甲！）。被动技能：狙击，穿透效果。有距离限制，伤害应为85%的血量。每局一次。
    /// 人类，无边荒野，绝境方见真知。（我会逆境翻盘）。被动技能：当收到生命值超过80%的伤害，可在3秒之内按下Q键，跳跃到敌人身边，
    ///                                                           生命值归为50%，并增加20%减伤，20%攻击力，持续30s。
    /// 恶魔，地狱，隐身。不入地狱不可见。（桀桀桀桀桀桀桀）。被动技能：在地狱区域隐身，并可在地狱区域随时瞬移，cd：2s。但敌人在地狱区域超过2分钟，血量变为0。
    /// 玩法设计：玩家进入角斗场：30秒准备时间，防护罩，不允许进入其他玩家区域。初识3张卡片，之后每分钟获得一张卡片。消极避战第三次直接游戏失败。5分钟未收到伤害，未对
    /// 其他玩家造成伤害。
    /// 未定：视角是上帝视角还是第三人称视角。两种模式？
    /// 每个职业都有足以定胜负卡片。
    /// 空投：在地图的最中心。拾取时间为10秒，里面应该是足够威胁一方的卡片。一局最多有4个空投，4张卡片随机顺序。
    /// 
    /// 1.卡牌效果设计。
    /// 精灵：落月箭：向天上发射箭矢，落到远处地上，对一定范围内的敌人造成伤害。
    ///       森之精灵：在森林环境中，减伤10%，每秒恢复1%的生命。
    ///       穿甲箭：配合被动使用，下一次被动技能，可穿透目标，造成额外伤害。
    ///       
    ///       精灵奥义：每30秒，森林地形进行扩张。5分钟之后，森林地形扩散完毕后，精灵获得90%的减伤，每秒恢复5%的血量。
    /// 机械：
    ///       穿甲弹：配合被动使用，下一次被动技能，可穿透目标，造成额外伤害。（秒杀）
    ///       机械犬：召唤物，移动极快。
    ///       
    /// 人类：
    /// 恶魔：
    /// </summary>
    /// <param name="weapon"></param>
    /// <param name="item"></param>
    public static void Get(Weapon weapon, Item item)
    {
        Weapon oldWeapon = null;
        switch (weapon.weaponType)
        {
            case WeaponType.Weapon:
                item.Substration();
                if (currentWeapon == null)
                {
                    GetCharacterItem(weapon, characterPanel.transform.GetChild(0).gameObject);
                }
                else
                {
                    oldWeapon = currentWeapon;
                    //生成新武器
                    GetCharacterItem(weapon, characterPanel.transform.GetChild(0).gameObject);
                    //旧武器
                    item.GetItem(oldWeapon);
                }
                ObserverManager.ui_observer.Send(characterPanel.GetComponent<CharacterItem>(), UIEventType.AttackChange);
                break;
            case WeaponType.Cloth:
                item.Substration();
                break;
        }
    }

    public void OnPointerDown(PointerEventData eventData)
    {
        //右键
        if (eventData.button == PointerEventData.InputButton.Right)
        {
            Debug.Log("右键");
        }
        //左键
        else if (eventData.button == PointerEventData.InputButton.Left)
        {
            Debug.Log("左键");
        }
    }
}
